<test></test>
<my-directive-require>
  <require-child require-sibling>

  </require-child>
</my-directive-require>
<div class="alert alert-danger" role="alert">
  require和controller结合使用，一般用于指令与指令之间的交流
</div>
<pre>
  zppdirective.directive('myDirectiveRequire', function() {
    return {
      restrict: 'EA',
      transclude: true,
      controller: function($scope, $element, $attrs) {
        // 指令控制器的逻辑代码
        $scope.list = ['zs', 'ls', 'ww'];
        // 在这里把控制看成一个构造函数
        this.myClick = function() {
          console.log('我是requireChild的父亲节点')
        }
      },
      templateUrl: 'app/views/template/require.html'
    }
  })
  zppdirective.directive('requireChild', function() {
    return {
      restrict: 'EA',
      // 以数组的形式引入多个其他的指令
      require: ['^myDirectiveRequire', '?requireSibling', '?test'],
      // 这里的第四个参数是数组，因为require的取值是数组
      // 如果require的取值是字符串，这里就是一个object,不过也可能为null
      link: function(scope, ele, attr, myCtrl) {
        console.log(myCtrl);
        myCtrl[0].myClick();
        console.log(myCtrl[1].msg)
      }
    }
  })
  zppdirective.directive('requireSibling', function() {
    return {
      restrict: 'EA',
      controller: function($scope) {
        this.msg = '我是requireChild的兄弟指令'
      }
    }
  })
  zppdirective.directive('test', function() {
    return {
      restrict: 'E',
      controller: function() {
        this.test = '我是测试指令'
      }
    }
  })
</pre>
